﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CAGFIP.Jogo
{
    public enum AjudaCode
    {
        Chute = 0,
        Pulo = 1,
        RemocaoAlternativa = 2,
    }

    public class AjudaCollection
    {
        #region Fields

        private Ajuda chute;
        private Ajuda pulo;
        private Ajuda remAlt;

        #endregion

        #region Constructors

        public AjudaCollection(GUIUpdate<int> chuteUpdateHandler, GUIUpdate<int> puloUpdateHandler, GUIUpdate<int> remAltUpdateHandler)
        {
            if (chuteUpdateHandler == null) throw new ArgumentNullException("chuteUpdateHandler");
            if (puloUpdateHandler == null) throw new ArgumentNullException("puloUpdateHandler");
            if (remAltUpdateHandler == null) throw new ArgumentNullException("remAltUpdateHandler");
            this.chute = new AjudaChute(chuteUpdateHandler);
            this.pulo = new AjudaPulo(puloUpdateHandler);
            this.remAlt = new AjudaRemocaoAlternativa(remAltUpdateHandler);
        }

        #endregion

        #region Properties

        public Ajuda this[AjudaCode code]
        {
            get
            {
                switch (code)
                {
                    case AjudaCode.Chute:
                        return this.chute;
                    case AjudaCode.Pulo:
                        return this.pulo;
                    case AjudaCode.RemocaoAlternativa:
                        return this.remAlt;
                    default:
                        throw new NotImplementedException();
                }
            }
        }

        #endregion

        #region Methods

        public void Configurar(Dificuldade dif)
        {
            this.chute.Configurar(dif);
            this.pulo.Configurar(dif);
            this.remAlt.Configurar(dif);
        }

        #endregion
    }
}
